//
// Created by 11510 on 2024/7/4.
//
#include <iostream>
#include <thread>
#include <mutex>
#include <atomic>

using namespace std;

atomic<int> cnt = 0;

void threadFunc(void){
    for(size_t idx = 0; idx != 10000; ++idx){
        /**
         * 原子变量，无锁编程
         * CAS原理：
         *  CAS操作比较内存中的某个值，
         *  如果该值与预期值相等，则将其更新为新值。
         *  否则，不做任何更改。
         */
        cnt++;
    }
}


int main() {
    thread th1(threadFunc);
    thread th2(threadFunc);
    th1.join();
    th2.join();

    cout << cnt << endl;
    return 0;
}
